package com.cctc.juc.source.Athread;

/**
 * [Runnable 扩展] 接口
 * 描述信息：Callable 依赖于 Runnable [Runnable.run() -> Callable.call()]，用于扩展异步任务 Runnable 的能力。
 * 优点：
 * - 有返回值；
 * - 可以抛出异常信息。
 * Callable 实现类及其创建方式：
 * - 实现类 Executors.PrivilegedCallable：已经建立在特定访问控制（访问系统资源）基础上的 Callable；
 * --> 创建方式：Executors.privilegedCallable(Callable<T> callable)。
 * - 实现类 Executors.PrivilegedCallableUsingCurrentClassLoader：已经建立在特定访问控制（访问系统资源）和当前类加载器基础上的 Callable。
 * --> 创建方式：Executors.privilegedCallableUsingCurrentClassLoader(Callable<T> callable)。
 * - 实现类 Executors.RunnableAdapter：给定运行的任务和结果，运行给定的任何并返回给定的结果。
 * --> 创建方式：Executors.callable(Runnable task, T result)、Executors.callable(Runnable task) [result = null]。
 */
@FunctionalInterface
public interface CCallable<V> {
    V call() throws Exception;
}
